-
Notifications
You must be signed in to change notification settings - Fork 4
피드 페이지
ChangSoo Choi edited this page Jul 7, 2023
·
2 revisions
- 로그인 하지 않을 시 댓글,좋아요,북마크 수를 기준으로 한 추천 목록 제시
- 로그인 할 시 추천알고리즘에 의한 추천, 구독한 사람의 글 목록, 북마크한 글 목록 제시
articles/paginations.py
ai_process/recommend.py
class RecommendView(APIView):
def get(self, request):
func_dict = {"0": collaborative_filtering, "1": content_base}
# 비로그인 시
if request.user.is_anonymous:
articles = (
Article.objects.annotate(
score=Count("comment") + Count("like") * 3 + Count("bookmark") * 4
)
.filter(score__gt=0)
.order_by("-score")
)
articles = articles[:10]
# 로그인 시
else:
select = request.GET.get("recommend", "0")
list_of_pk, dictionary = func_dict[select](request.user.id)
articles = sorted(
Article.objects.filter(id__in=list_of_pk),
key=lambda x: dictionary[x.id],
reverse=True,
)
serializer = ArticleListSerializer(
articles, many=True, context={"request": request}
)
return Response(serializer.data, status=status.HTTP_200_OK)